Many computing systems support the execution of multiple threads to perform tasks in parallel. Typically, the number of tasks that can be run concurrently in a particular computer system is limited by the operational environment (the amount of available processing units, memory, connections to databases, etc.). Multiple threads can be created and grouped as a pool to perform a number of tasks in parallel. However, some of the tasks can be performed faster than the others. Executions of long-running tasks can block the threads from processing other tasks (e.g., short-running tasks). As such, handling all the tasks by the same thread pool may cause all the threads in the pool to be allocated to the long-running tasks, leaving no capacity for the short-running tasks to be handled.